<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head><!-- start favicons snippet, use https://realfavicongenerator.net/ --><link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png"><link rel="manifest" href="/assets/site.webmanifest"><link rel="mask-icon" href="/assets/safari-pinned-tab.svg" color="#fc4d50"><link rel="shortcut icon" href="/assets/favicon.ico"><meta name="msapplication-TileColor" content="#ffc40d"><meta name="msapplication-config" content="/assets/browserconfig.xml"><meta name="theme-color" content="#ffffff"><!-- end favicons snippet -->
<title>ChunkSampleStream (ExoPlayer library)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="ChunkSampleStream (ExoPlayer library)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">com.google.android.exoplayer2.source.chunk</a></div>
<h2 title="Class ChunkSampleStream" class="title">Class ChunkSampleStream&lt;T extends <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSource</a>&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.google.android.exoplayer2.source.chunk.ChunkSampleStream&lt;T&gt;</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></code>, <code><a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code>, <code><a href="../../upstream/Loader.Callback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.Callback</a>&lt;<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&gt;</code>, <code><a href="../../upstream/Loader.ReleaseCallback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.ReleaseCallback</a></code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ChunkSampleStream&lt;T extends <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSource</a>&gt;</span>
extends <a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a>
implements <a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a>, <a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a>, <a href="../../upstream/Loader.Callback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.Callback</a>&lt;<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&gt;, <a href="../../upstream/Loader.ReleaseCallback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.ReleaseCallback</a></pre>
<div class="block">A <a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a> that loads media in <a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk"><code>Chunk</code></a>s, obtained from a <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk"><code>ChunkSource</code></a>.
 May also be configured to expose additional embedded <a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a>s.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!--   -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ChunkSampleStream.EmbeddedSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk">ChunkSampleStream.EmbeddedSampleStream</a></span></code></th>
<td class="colLast">
<div class="block">A <a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source"><code>SampleStream</code></a> embedded in a <a href="ChunkSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk"><code>ChunkSampleStream</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static interface&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ChunkSampleStream.ReleaseCallback.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSampleStream.ReleaseCallback</a>&lt;<a href="ChunkSampleStream.ReleaseCallback.html" title="type parameter in ChunkSampleStream.ReleaseCallback">T</a> extends <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSource</a>&gt;</span></code></th>
<td class="colLast">
<div class="block">A callback to be notified when a sample stream has finished being released.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.source.SampleStream">
<!--   -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></h3>
<code><a href="../SampleStream.ReadDataResult.html" title="annotation in com.google.android.exoplayer2.source">SampleStream.ReadDataResult</a>, <a href="../SampleStream.ReadFlags.html" title="annotation in com.google.android.exoplayer2.source">SampleStream.ReadFlags</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.com.google.android.exoplayer2.source.SequenceableLoader">
<!--   -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></h3>
<code><a href="../SequenceableLoader.Callback.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader.Callback</a>&lt;<a href="../SequenceableLoader.Callback.html" title="type parameter in SequenceableLoader.Callback">T</a> extends <a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a>&gt;</code></li>
</ul>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#primaryTrackType">primaryTrackType</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.com.google.android.exoplayer2.source.SampleStream">
<!--   -->
</a>
<h3>Fields inherited from interface&nbsp;com.google.android.exoplayer2.source.<a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></h3>
<code><a href="../SampleStream.html#FLAG_OMIT_SAMPLE_DATA">FLAG_OMIT_SAMPLE_DATA</a>, <a href="../SampleStream.html#FLAG_PEEK">FLAG_PEEK</a>, <a href="../SampleStream.html#FLAG_REQUIRE_FORMAT">FLAG_REQUIRE_FORMAT</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(int,int%5B%5D,com.google.android.exoplayer2.Format%5B%5D,T,com.google.android.exoplayer2.source.SequenceableLoader.Callback,com.google.android.exoplayer2.upstream.Allocator,long,com.google.android.exoplayer2.drm.DrmSessionManager,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher,com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy,com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher)">ChunkSampleStream</a></span>&#8203;(int&nbsp;primaryTrackType,
                 int[]&nbsp;embeddedTrackTypes,
                 <a href="../../Format.html" title="class in com.google.android.exoplayer2">Format</a>[]&nbsp;embeddedTrackFormats,
                 <a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&nbsp;chunkSource,
                 <a href="../SequenceableLoader.Callback.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader.Callback</a>&lt;<a href="ChunkSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk">ChunkSampleStream</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&gt;&gt;&nbsp;callback,
                 <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream">Allocator</a>&nbsp;allocator,
                 long&nbsp;positionUs,
                 <a href="../../drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionManager</a>&nbsp;drmSessionManager,
                 <a href="../../drm/DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a>&nbsp;drmEventDispatcher,
                 <a href="../../upstream/LoadErrorHandlingPolicy.html" title="interface in com.google.android.exoplayer2.upstream">LoadErrorHandlingPolicy</a>&nbsp;loadErrorHandlingPolicy,
                 <a href="../MediaSourceEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.source">MediaSourceEventListener.EventDispatcher</a>&nbsp;mediaSourceEventDispatcher)</code></th>
<td class="colLast">
<div class="block">Constructs an instance.</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#continueLoading(long)">continueLoading</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Attempts to continue loading.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#discardBuffer(long,boolean)">discardBuffer</a></span>&#8203;(long&nbsp;positionUs,
             boolean&nbsp;toKeyframe)</code></th>
<td class="colLast">
<div class="block">Discards buffered media up to the specified position.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAdjustedSeekPositionUs(long,com.google.android.exoplayer2.SeekParameters)">getAdjustedSeekPositionUs</a></span>&#8203;(long&nbsp;positionUs,
                         <a href="../../SeekParameters.html" title="class in com.google.android.exoplayer2">SeekParameters</a>&nbsp;seekParameters)</code></th>
<td class="colLast">
<div class="block">Adjusts a seek position given the specified <a href="../../SeekParameters.html" title="class in com.google.android.exoplayer2"><code>SeekParameters</code></a>.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBufferedPositionUs()">getBufferedPositionUs</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns an estimate of the position up to which data is buffered.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getChunkSource()">getChunkSource</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk"><code>ChunkSource</code></a> used by this stream.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getNextLoadPositionUs()">getNextLoadPositionUs</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns the next load time, or <a href="../../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> if loading has finished.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isLoading()">isLoading</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether the loader is currently loading.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isReady()">isReady</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns whether data is available to be read.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#maybeThrowError()">maybeThrowError</a></span>()</code></th>
<td class="colLast">
<div class="block">Throws an error that's preventing data from being read.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCanceled(com.google.android.exoplayer2.source.chunk.Chunk,long,long,boolean)">onLoadCanceled</a></span>&#8203;(<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&nbsp;loadable,
              long&nbsp;elapsedRealtimeMs,
              long&nbsp;loadDurationMs,
              boolean&nbsp;released)</code></th>
<td class="colLast">
<div class="block">Called when a load has been canceled.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadCompleted(com.google.android.exoplayer2.source.chunk.Chunk,long,long)">onLoadCompleted</a></span>&#8203;(<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&nbsp;loadable,
               long&nbsp;elapsedRealtimeMs,
               long&nbsp;loadDurationMs)</code></th>
<td class="colLast">
<div class="block">Called when a load has completed.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoaderReleased()">onLoaderReleased</a></span>()</code></th>
<td class="colLast">
<div class="block">Called when the <a href="../../upstream/Loader.html" title="class in com.google.android.exoplayer2.upstream"><code>Loader</code></a> has finished being released.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="../../upstream/Loader.LoadErrorAction.html" title="class in com.google.android.exoplayer2.upstream">Loader.LoadErrorAction</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#onLoadError(com.google.android.exoplayer2.source.chunk.Chunk,long,long,java.io.IOException,int)">onLoadError</a></span>&#8203;(<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&nbsp;loadable,
           long&nbsp;elapsedRealtimeMs,
           long&nbsp;loadDurationMs,
           <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a>&nbsp;error,
           int&nbsp;errorCount)</code></th>
<td class="colLast">
<div class="block">Called when a load encounters an error.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readData(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,int)">readData</a></span>&#8203;(<a href="../../FormatHolder.html" title="class in com.google.android.exoplayer2">FormatHolder</a>&nbsp;formatHolder,
        <a href="../../decoder/DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>&nbsp;buffer,
        int&nbsp;readFlags)</code></th>
<td class="colLast">
<div class="block">Attempts to read from the stream.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#reevaluateBuffer(long)">reevaluateBuffer</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Re-evaluates the buffer given the playback position.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#release()">release</a></span>()</code></th>
<td class="colLast">
<div class="block">Releases the stream.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#release(com.google.android.exoplayer2.source.chunk.ChunkSampleStream.ReleaseCallback)">release</a></span>&#8203;(<a href="ChunkSampleStream.ReleaseCallback.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSampleStream.ReleaseCallback</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&gt;&nbsp;callback)</code></th>
<td class="colLast">
<div class="block">Releases the stream.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#seekToUs(long)">seekToUs</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Seeks to the specified position in microseconds.</div>
</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="ChunkSampleStream.EmbeddedSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk">ChunkSampleStream.EmbeddedSampleStream</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#selectEmbeddedTrack(long,int)">selectEmbeddedTrack</a></span>&#8203;(long&nbsp;positionUs,
                   int&nbsp;trackType)</code></th>
<td class="colLast">
<div class="block">Selects the embedded track, returning a new <a href="ChunkSampleStream.EmbeddedSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk"><code>ChunkSampleStream.EmbeddedSampleStream</code></a> from which the track's
 samples can be consumed.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#skipData(long)">skipData</a></span>&#8203;(long&nbsp;positionUs)</code></th>
<td class="colLast">
<div class="block">Attempts to skip to the keyframe before the specified position, or to the end of the stream if
 <code>positionUs</code> is beyond it.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://developer.android.com/reference/java/lang/Object.html" title="class or interface in java.lang" class="externalLink" target="_top">Object</a></h3>
<code><a href="https://developer.android.com/reference/java/lang/Object.html#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://developer.android.com/reference/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink" target="_top">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a id="primaryTrackType">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>primaryTrackType</h4>
<pre>public final&nbsp;int primaryTrackType</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;(int,int[],com.google.android.exoplayer2.Format[],com.google.android.exoplayer2.source.chunk.ChunkSource,com.google.android.exoplayer2.source.SequenceableLoader.Callback,com.google.android.exoplayer2.upstream.Allocator,long,com.google.android.exoplayer2.drm.DrmSessionManager,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher,com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy,com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher)">
<!--   -->
</a><a id="&lt;init&gt;(int,int[],com.google.android.exoplayer2.Format[],T,com.google.android.exoplayer2.source.SequenceableLoader.Callback,com.google.android.exoplayer2.upstream.Allocator,long,com.google.android.exoplayer2.drm.DrmSessionManager,com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher,com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy,com.google.android.exoplayer2.source.MediaSourceEventListener.EventDispatcher)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ChunkSampleStream</h4>
<pre>public&nbsp;ChunkSampleStream&#8203;(int&nbsp;primaryTrackType,
                         @Nullable
                         int[]&nbsp;embeddedTrackTypes,
                         @Nullable
                         <a href="../../Format.html" title="class in com.google.android.exoplayer2">Format</a>[]&nbsp;embeddedTrackFormats,
                         <a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&nbsp;chunkSource,
                         <a href="../SequenceableLoader.Callback.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader.Callback</a>&lt;<a href="ChunkSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk">ChunkSampleStream</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&gt;&gt;&nbsp;callback,
                         <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream">Allocator</a>&nbsp;allocator,
                         long&nbsp;positionUs,
                         <a href="../../drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer2.drm">DrmSessionManager</a>&nbsp;drmSessionManager,
                         <a href="../../drm/DrmSessionEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.drm">DrmSessionEventListener.EventDispatcher</a>&nbsp;drmEventDispatcher,
                         <a href="../../upstream/LoadErrorHandlingPolicy.html" title="interface in com.google.android.exoplayer2.upstream">LoadErrorHandlingPolicy</a>&nbsp;loadErrorHandlingPolicy,
                         <a href="../MediaSourceEventListener.EventDispatcher.html" title="class in com.google.android.exoplayer2.source">MediaSourceEventListener.EventDispatcher</a>&nbsp;mediaSourceEventDispatcher)</pre>
<div class="block">Constructs an instance.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>primaryTrackType</code> - The type of the primary track. One of the <a href="../../C.html" title="class in com.google.android.exoplayer2"><code>C</code></a> <code>
     TRACK_TYPE_*</code> constants.</dd>
<dd><code>embeddedTrackTypes</code> - The types of any embedded tracks, or null.</dd>
<dd><code>embeddedTrackFormats</code> - The formats of the embedded tracks, or null.</dd>
<dd><code>chunkSource</code> - A <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk"><code>ChunkSource</code></a> from which chunks to load are obtained.</dd>
<dd><code>callback</code> - An <a href="../SequenceableLoader.Callback.html" title="interface in com.google.android.exoplayer2.source"><code>SequenceableLoader.Callback</code></a> for the stream.</dd>
<dd><code>allocator</code> - An <a href="../../upstream/Allocator.html" title="interface in com.google.android.exoplayer2.upstream"><code>Allocator</code></a> from which allocations can be obtained.</dd>
<dd><code>positionUs</code> - The position from which to start loading media.</dd>
<dd><code>drmSessionManager</code> - The <a href="../../drm/DrmSessionManager.html" title="interface in com.google.android.exoplayer2.drm"><code>DrmSessionManager</code></a> to obtain <a href="../../drm/DrmSession.html" title="interface in com.google.android.exoplayer2.drm"><code>DrmSessions</code></a>
     from.</dd>
<dd><code>drmEventDispatcher</code> - A dispatcher to notify of <a href="../../drm/DrmSessionEventListener.html" title="interface in com.google.android.exoplayer2.drm"><code>DrmSessionEventListener</code></a> events.</dd>
<dd><code>loadErrorHandlingPolicy</code> - The <a href="../../upstream/LoadErrorHandlingPolicy.html" title="interface in com.google.android.exoplayer2.upstream"><code>LoadErrorHandlingPolicy</code></a>.</dd>
<dd><code>mediaSourceEventDispatcher</code> - A dispatcher to notify of <a href="../MediaSourceEventListener.html" title="interface in com.google.android.exoplayer2.source"><code>MediaSourceEventListener</code></a>
     events.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="discardBuffer(long,boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>discardBuffer</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;discardBuffer&#8203;(long&nbsp;positionUs,
                          boolean&nbsp;toKeyframe)</pre>
<div class="block">Discards buffered media up to the specified position.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The position to discard up to, in microseconds.</dd>
<dd><code>toKeyframe</code> - If true then for each track discards samples up to the keyframe before or at
     the specified position, rather than any sample before or at that position.</dd>
</dl>
</li>
</ul>
<a id="selectEmbeddedTrack(long,int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>selectEmbeddedTrack</h4>
<pre class="methodSignature">public&nbsp;<a href="ChunkSampleStream.EmbeddedSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk">ChunkSampleStream.EmbeddedSampleStream</a>&nbsp;selectEmbeddedTrack&#8203;(long&nbsp;positionUs,
                                                                  int&nbsp;trackType)</pre>
<div class="block">Selects the embedded track, returning a new <a href="ChunkSampleStream.EmbeddedSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk"><code>ChunkSampleStream.EmbeddedSampleStream</code></a> from which the track's
 samples can be consumed. <a href="ChunkSampleStream.EmbeddedSampleStream.html#release()"><code>ChunkSampleStream.EmbeddedSampleStream.release()</code></a> must be called on the returned
 stream when the track is no longer required, and before calling this method again to obtain
 another stream for the same track.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The current playback position in microseconds.</dd>
<dd><code>trackType</code> - The type of the embedded track to enable.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="ChunkSampleStream.EmbeddedSampleStream.html" title="class in com.google.android.exoplayer2.source.chunk"><code>ChunkSampleStream.EmbeddedSampleStream</code></a> for the embedded track.</dd>
</dl>
</li>
</ul>
<a id="getChunkSource()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getChunkSource</h4>
<pre class="methodSignature">public&nbsp;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&nbsp;getChunkSource()</pre>
<div class="block">Returns the <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk"><code>ChunkSource</code></a> used by this stream.</div>
</li>
</ul>
<a id="getBufferedPositionUs()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBufferedPositionUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getBufferedPositionUs()</pre>
<div class="block">Returns an estimate of the position up to which data is buffered.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SequenceableLoader.html#getBufferedPositionUs()">getBufferedPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>An estimate of the absolute position in microseconds up to which data is buffered, or
     <a href="../../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> if the track is fully buffered.</dd>
</dl>
</li>
</ul>
<a id="getAdjustedSeekPositionUs(long,com.google.android.exoplayer2.SeekParameters)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAdjustedSeekPositionUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getAdjustedSeekPositionUs&#8203;(long&nbsp;positionUs,
                                      <a href="../../SeekParameters.html" title="class in com.google.android.exoplayer2">SeekParameters</a>&nbsp;seekParameters)</pre>
<div class="block">Adjusts a seek position given the specified <a href="../../SeekParameters.html" title="class in com.google.android.exoplayer2"><code>SeekParameters</code></a>. Chunk boundaries are used
 as sync points.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The seek position in microseconds.</dd>
<dd><code>seekParameters</code> - Parameters that control how the seek is performed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The adjusted seek position, in microseconds.</dd>
</dl>
</li>
</ul>
<a id="seekToUs(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>seekToUs</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;seekToUs&#8203;(long&nbsp;positionUs)</pre>
<div class="block">Seeks to the specified position in microseconds.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The seek position in microseconds.</dd>
</dl>
</li>
</ul>
<a id="release()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>release</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;release()</pre>
<div class="block">Releases the stream.

 <p>This method should be called when the stream is no longer required. Either this method or
 <a href="#release(com.google.android.exoplayer2.source.chunk.ChunkSampleStream.ReleaseCallback)"><code>release(ReleaseCallback)</code></a> can be used to release this stream.</div>
</li>
</ul>
<a id="release(com.google.android.exoplayer2.source.chunk.ChunkSampleStream.ReleaseCallback)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>release</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;release&#8203;(@Nullable
                    <a href="ChunkSampleStream.ReleaseCallback.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSampleStream.ReleaseCallback</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a>&gt;&nbsp;callback)</pre>
<div class="block">Releases the stream.

 <p>This method should be called when the stream is no longer required. Either this method or
 <a href="#release()"><code>release()</code></a> can be used to release this stream.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>callback</code> - An optional callback to be called on the loading thread once the loader has
     been released.</dd>
</dl>
</li>
</ul>
<a id="onLoaderReleased()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onLoaderReleased</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onLoaderReleased()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../upstream/Loader.ReleaseCallback.html#onLoaderReleased()">Loader.ReleaseCallback</a></code></span></div>
<div class="block">Called when the <a href="../../upstream/Loader.html" title="class in com.google.android.exoplayer2.upstream"><code>Loader</code></a> has finished being released.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../upstream/Loader.ReleaseCallback.html#onLoaderReleased()">onLoaderReleased</a></code>&nbsp;in interface&nbsp;<code><a href="../../upstream/Loader.ReleaseCallback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.ReleaseCallback</a></code></dd>
</dl>
</li>
</ul>
<a id="isReady()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isReady</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isReady()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SampleStream.html#isReady()">SampleStream</a></code></span></div>
<div class="block">Returns whether data is available to be read.

 <p>Note: If the stream has ended then a buffer with the end of stream flag can always be read
 from <a href="../SampleStream.html#readData(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,int)"><code>SampleStream.readData(com.google.android.exoplayer2.FormatHolder, com.google.android.exoplayer2.decoder.DecoderInputBuffer, int)</code></a>. Hence an ended stream is always ready.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SampleStream.html#isReady()">isReady</a></code>&nbsp;in interface&nbsp;<code><a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Whether data is available to be read.</dd>
</dl>
</li>
</ul>
<a id="maybeThrowError()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>maybeThrowError</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;maybeThrowError()
                     throws <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SampleStream.html#maybeThrowError()">SampleStream</a></code></span></div>
<div class="block">Throws an error that's preventing data from being read. Does nothing if no such error exists.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SampleStream.html#maybeThrowError()">maybeThrowError</a></code>&nbsp;in interface&nbsp;<code><a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a></code> - The underlying error.</dd>
</dl>
</li>
</ul>
<a id="readData(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readData</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;readData&#8203;(<a href="../../FormatHolder.html" title="class in com.google.android.exoplayer2">FormatHolder</a>&nbsp;formatHolder,
                    <a href="../../decoder/DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder">DecoderInputBuffer</a>&nbsp;buffer,
                    <a href="../SampleStream.ReadFlags.html" title="annotation in com.google.android.exoplayer2.source">@ReadFlags</a>
                    int&nbsp;readFlags)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SampleStream.html#readData(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,int)">SampleStream</a></code></span></div>
<div class="block">Attempts to read from the stream.

 <p>If the stream has ended then <a href="../../C.html#BUFFER_FLAG_END_OF_STREAM"><code>C.BUFFER_FLAG_END_OF_STREAM</code></a> flag is set on <code>
 buffer</code> and <a href="../../C.html#RESULT_BUFFER_READ"><code>C.RESULT_BUFFER_READ</code></a> is returned. Else if no data is available then <a href="../../C.html#RESULT_NOTHING_READ"><code>C.RESULT_NOTHING_READ</code></a> is returned. Else if the format of the media is changing or if <code>
 formatRequired</code> is set then <code>formatHolder</code> is populated and <a href="../../C.html#RESULT_FORMAT_READ"><code>C.RESULT_FORMAT_READ</code></a>
 is returned. Else <code>buffer</code> is populated and <a href="../../C.html#RESULT_BUFFER_READ"><code>C.RESULT_BUFFER_READ</code></a> is returned.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SampleStream.html#readData(com.google.android.exoplayer2.FormatHolder,com.google.android.exoplayer2.decoder.DecoderInputBuffer,int)">readData</a></code>&nbsp;in interface&nbsp;<code><a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>formatHolder</code> - A <a href="../../FormatHolder.html" title="class in com.google.android.exoplayer2"><code>FormatHolder</code></a> to populate in the case of reading a format.</dd>
<dd><code>buffer</code> - A <a href="../../decoder/DecoderInputBuffer.html" title="class in com.google.android.exoplayer2.decoder"><code>DecoderInputBuffer</code></a> to populate in the case of reading a sample or the
     end of the stream. If the end of the stream has been reached, the <a href="../../C.html#BUFFER_FLAG_END_OF_STREAM"><code>C.BUFFER_FLAG_END_OF_STREAM</code></a> flag will be set on the buffer.</dd>
<dd><code>readFlags</code> - Flags controlling the behavior of this read operation.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The <a href="../SampleStream.ReadDataResult.html" title="annotation in com.google.android.exoplayer2.source"><code>result</code></a> of the read operation.</dd>
</dl>
</li>
</ul>
<a id="skipData(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>skipData</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;skipData&#8203;(long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SampleStream.html#skipData(long)">SampleStream</a></code></span></div>
<div class="block">Attempts to skip to the keyframe before the specified position, or to the end of the stream if
 <code>positionUs</code> is beyond it.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SampleStream.html#skipData(long)">skipData</a></code>&nbsp;in interface&nbsp;<code><a href="../SampleStream.html" title="interface in com.google.android.exoplayer2.source">SampleStream</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The specified time.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The number of samples that were skipped.</dd>
</dl>
</li>
</ul>
<a id="onLoadCompleted(com.google.android.exoplayer2.source.chunk.Chunk,long,long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onLoadCompleted</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onLoadCompleted&#8203;(<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&nbsp;loadable,
                            long&nbsp;elapsedRealtimeMs,
                            long&nbsp;loadDurationMs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../upstream/Loader.Callback.html#onLoadCompleted(T,long,long)">Loader.Callback</a></code></span></div>
<div class="block">Called when a load has completed.

 <p>Note: There is guaranteed to be a memory barrier between <a href="../../upstream/Loader.Loadable.html#load()"><code>Loader.Loadable.load()</code></a> exiting
 and this callback being called.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../upstream/Loader.Callback.html#onLoadCompleted(T,long,long)">onLoadCompleted</a></code>&nbsp;in interface&nbsp;<code><a href="../../upstream/Loader.Callback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.Callback</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a> extends <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSource</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loadable</code> - The loadable whose load has completed.</dd>
<dd><code>elapsedRealtimeMs</code> - <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()" title="class or interface in android.os" class="externalLink" target="_top"><code>SystemClock.elapsedRealtime()</code></a> when the load ended.</dd>
<dd><code>loadDurationMs</code> - The duration in milliseconds of the load since <a href="../../upstream/Loader.html#startLoading(T,com.google.android.exoplayer2.upstream.Loader.Callback,int)"><code>Loader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback&lt;T&gt;, int)</code></a>
     was called.</dd>
</dl>
</li>
</ul>
<a id="onLoadCanceled(com.google.android.exoplayer2.source.chunk.Chunk,long,long,boolean)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onLoadCanceled</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;onLoadCanceled&#8203;(<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&nbsp;loadable,
                           long&nbsp;elapsedRealtimeMs,
                           long&nbsp;loadDurationMs,
                           boolean&nbsp;released)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../upstream/Loader.Callback.html#onLoadCanceled(T,long,long,boolean)">Loader.Callback</a></code></span></div>
<div class="block">Called when a load has been canceled.

 <p>Note: If the <a href="../../upstream/Loader.html" title="class in com.google.android.exoplayer2.upstream"><code>Loader</code></a> has not been released then there is guaranteed to be a memory
 barrier between <a href="../../upstream/Loader.Loadable.html#load()"><code>Loader.Loadable.load()</code></a> exiting and this callback being called. If the <a href="../../upstream/Loader.html" title="class in com.google.android.exoplayer2.upstream"><code>Loader</code></a> has been released then this callback may be called before <a href="../../upstream/Loader.Loadable.html#load()"><code>Loader.Loadable.load()</code></a>
 exits.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../upstream/Loader.Callback.html#onLoadCanceled(T,long,long,boolean)">onLoadCanceled</a></code>&nbsp;in interface&nbsp;<code><a href="../../upstream/Loader.Callback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.Callback</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a> extends <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSource</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loadable</code> - The loadable whose load has been canceled.</dd>
<dd><code>elapsedRealtimeMs</code> - <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()" title="class or interface in android.os" class="externalLink" target="_top"><code>SystemClock.elapsedRealtime()</code></a> when the load was canceled.</dd>
<dd><code>loadDurationMs</code> - The duration in milliseconds of the load since <a href="../../upstream/Loader.html#startLoading(T,com.google.android.exoplayer2.upstream.Loader.Callback,int)"><code>Loader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback&lt;T&gt;, int)</code></a>
     was called up to the point at which it was canceled.</dd>
<dd><code>released</code> - True if the load was canceled because the <a href="../../upstream/Loader.html" title="class in com.google.android.exoplayer2.upstream"><code>Loader</code></a> was released. False
     otherwise.</dd>
</dl>
</li>
</ul>
<a id="onLoadError(com.google.android.exoplayer2.source.chunk.Chunk,long,long,java.io.IOException,int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>onLoadError</h4>
<pre class="methodSignature">public&nbsp;<a href="../../upstream/Loader.LoadErrorAction.html" title="class in com.google.android.exoplayer2.upstream">Loader.LoadErrorAction</a>&nbsp;onLoadError&#8203;(<a href="Chunk.html" title="class in com.google.android.exoplayer2.source.chunk">Chunk</a>&nbsp;loadable,
                                          long&nbsp;elapsedRealtimeMs,
                                          long&nbsp;loadDurationMs,
                                          <a href="https://developer.android.com/reference/java/io/IOException.html" title="class or interface in java.io" class="externalLink" target="_top">IOException</a>&nbsp;error,
                                          int&nbsp;errorCount)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../upstream/Loader.Callback.html#onLoadError(T,long,long,java.io.IOException,int)">Loader.Callback</a></code></span></div>
<div class="block">Called when a load encounters an error.

 <p>Note: There is guaranteed to be a memory barrier between <a href="../../upstream/Loader.Loadable.html#load()"><code>Loader.Loadable.load()</code></a> exiting
 and this callback being called.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../upstream/Loader.Callback.html#onLoadError(T,long,long,java.io.IOException,int)">onLoadError</a></code>&nbsp;in interface&nbsp;<code><a href="../../upstream/Loader.Callback.html" title="interface in com.google.android.exoplayer2.upstream">Loader.Callback</a>&lt;<a href="ChunkSampleStream.html" title="type parameter in ChunkSampleStream">T</a> extends <a href="ChunkSource.html" title="interface in com.google.android.exoplayer2.source.chunk">ChunkSource</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>loadable</code> - The loadable whose load has encountered an error.</dd>
<dd><code>elapsedRealtimeMs</code> - <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtime()" title="class or interface in android.os" class="externalLink" target="_top"><code>SystemClock.elapsedRealtime()</code></a> when the error occurred.</dd>
<dd><code>loadDurationMs</code> - The duration in milliseconds of the load since <a href="../../upstream/Loader.html#startLoading(T,com.google.android.exoplayer2.upstream.Loader.Callback,int)"><code>Loader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback&lt;T&gt;, int)</code></a>
     was called up to the point at which the error occurred.</dd>
<dd><code>error</code> - The load error.</dd>
<dd><code>errorCount</code> - The number of errors this load has encountered, including this one.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The desired error handling action. One of <a href="../../upstream/Loader.html#RETRY"><code>Loader.RETRY</code></a>, <a href="../../upstream/Loader.html#RETRY_RESET_ERROR_COUNT"><code>Loader.RETRY_RESET_ERROR_COUNT</code></a>, <a href="../../upstream/Loader.html#DONT_RETRY"><code>Loader.DONT_RETRY</code></a>, <a href="../../upstream/Loader.html#DONT_RETRY_FATAL"><code>Loader.DONT_RETRY_FATAL</code></a> or a retry action created by <a href="../../upstream/Loader.html#createRetryAction(boolean,long)"><code>Loader.createRetryAction(boolean, long)</code></a>.</dd>
</dl>
</li>
</ul>
<a id="continueLoading(long)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>continueLoading</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;continueLoading&#8203;(long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SequenceableLoader.html#continueLoading(long)">SequenceableLoader</a></code></span></div>
<div class="block">Attempts to continue loading.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SequenceableLoader.html#continueLoading(long)">continueLoading</a></code>&nbsp;in interface&nbsp;<code><a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The current playback position in microseconds. If playback of the period to
     which this loader belongs has not yet started, the value will be the starting position
     in the period minus the duration of any media in previous periods still to be played.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if progress was made, meaning that <a href="../SequenceableLoader.html#getNextLoadPositionUs()"><code>SequenceableLoader.getNextLoadPositionUs()</code></a> will return
     a different value than prior to the call. False otherwise.</dd>
</dl>
</li>
</ul>
<a id="isLoading()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isLoading</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isLoading()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SequenceableLoader.html#isLoading()">SequenceableLoader</a></code></span></div>
<div class="block">Returns whether the loader is currently loading.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SequenceableLoader.html#isLoading()">isLoading</a></code>&nbsp;in interface&nbsp;<code><a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
</dl>
</li>
</ul>
<a id="getNextLoadPositionUs()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getNextLoadPositionUs</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getNextLoadPositionUs()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SequenceableLoader.html#getNextLoadPositionUs()">SequenceableLoader</a></code></span></div>
<div class="block">Returns the next load time, or <a href="../../C.html#TIME_END_OF_SOURCE"><code>C.TIME_END_OF_SOURCE</code></a> if loading has finished.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SequenceableLoader.html#getNextLoadPositionUs()">getNextLoadPositionUs</a></code>&nbsp;in interface&nbsp;<code><a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
</dl>
</li>
</ul>
<a id="reevaluateBuffer(long)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>reevaluateBuffer</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;reevaluateBuffer&#8203;(long&nbsp;positionUs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../SequenceableLoader.html#reevaluateBuffer(long)">SequenceableLoader</a></code></span></div>
<div class="block">Re-evaluates the buffer given the playback position.

 <p>Re-evaluation may discard buffered media or cancel ongoing loads so that media can be
 re-buffered in a different quality.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../SequenceableLoader.html#reevaluateBuffer(long)">reevaluateBuffer</a></code>&nbsp;in interface&nbsp;<code><a href="../SequenceableLoader.html" title="interface in com.google.android.exoplayer2.source">SequenceableLoader</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>positionUs</code> - The current playback position in microseconds. If playback of this period has
     not yet started, the value will be the starting position in this period minus the duration
     of any media in previous periods still to be played.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
</footer>
</body>
</html>
